From 91f2ad76aa82aebb9ebf0f959a8218429838c0a8 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 1 Feb 2019 11:29:53 +0100 Subject: [PATCH] ns16550/PCI: fix skipping of devices Selecting between single/multiple BAR mode should happen after checking whether to skip the present device, or else multi-BAR devices won't be skipped correctly, due to port_idx getting set to zero in that case. Signed-off-by: Jan Beulich Acked-by: Wei Liu master commit: c34fe0468acc61aca62422483c37a1309708f1cb master date: 2018-11-30 12:07:33 +0100 --- xen/drivers/char/ns16550.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index f32dbd3247..863647ce58 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -1037,18 +1037,18 @@ pci_uart_config(struct ns16550 *uart, bool_t skip_amt, unsigned int idx) } } - if ( !param->bar0 ) - { - bar_idx = idx; - port_idx = 0; - } - if ( port_idx >= param->max_ports ) { idx -= param->max_ports; continue; } + if ( !param->bar0 ) + { + bar_idx = idx; + port_idx = 0; + } + uart->io_base = 0; bar = pci_conf_read32(0, b, d, f, PCI_BASE_ADDRESS_0 + bar_idx*4); -- 2.30.2